package com.clay.appointment.service;

import com.clay.appointment.common.page.PageInfo;
import com.clay.appointment.entity.hospital.Schedule;
import com.clay.appointment.vo.hospital.ScheduleQueryVo;

import java.util.List;
import java.util.Map;

/**
 * @Author : clay
 * @Description:
 * @Date: Create in 16:17 2021/8/8
 * @Modified By:
 */
public interface ScheduleService {
    /**
     *
     * @param paramMap 保存的数据
     */
    void save(Map<String, Object> paramMap);

    /**
     *
     * @param page 当前页
     * @param limit 每页条数
     * @param scheduleQueryVo 查询的条件对象
     * @return 返回分页PageInfo
     */
    PageInfo<Schedule> selectPage(int page, int limit, ScheduleQueryVo scheduleQueryVo);

    /**
     * @Description: 根据医院编号和排班编号删除排班
     * @param hospitalCode 医院编号
     * @param hospitalScheduleId 排班编号
     */
    void removeSchedule(String hospitalCode, String hospitalScheduleId);

    /**
     * @Description: 根据医院和科室查询排班情况
     * @param page 页码
     * @param limit 每页记录苏
     * @param hospitalCode 医院编号
     * @param departmentCode 科室编号
     * @return 该医院的该科室的排班情况
     */
    Map<String,Object> getScheduleRule(Integer page, Integer limit, String hospitalCode, String departmentCode);

    /**
     * 根据医院编号 、科室编号和工作日期，查询排班详细信息
     * @param hospitalCode 医院编号
     * @param departmentCode 科室编号
     * @param workDate 工作日期
     * @return 排班信息
     */
    List<Schedule> getDetailSchedule(String hospitalCode, String departmentCode, String workDate);
}
